#include "cpu/exec/template-start.h"

#define instr test


static void do_execute()
{
    // 将目的操作数和源操作数按位与，并存储结果
    DATA_TYPE res = op_dest->val & op_src->val;

    // 更新标志寄存器中的奇偶标志、零标志和符号标志
    update_eflags_pf_zf_sf((DATA_TYPE_S)res);

    // 清除进位标志和溢出标志，因为 test 指令不会影响这些标志
    cpu.eflags.CF = cpu.eflags.OF = 0;

    
    print_asm_template2();
}

// 支持的指令格式：寄存器到内存/寄存器
make_instr_helper(r2rm)

// 支持的指令格式：立即数到内存/寄存器
make_instr_helper(i2rm)

// 支持的指令格式：立即数到累加寄存器
make_instr_helper(i2a)

#include "cpu/exec/template-end.h"